BibliotecaAuxiliarScript.execute('framework.src.gui.MenuItem');
BibliotecaAuxiliarScript.execute('framework.src.gui.Label');
BibliotecaAuxiliarScript.execute('framework.src.gui.Image');

Icone = MenuItem.new();

Icone.id = 'Icone';
Icone.img_icone = nil;
Icone.lb_nome = nil;
Icone.nb_distancia_label = 10;
Icone.st_orientacao="TITULO_RIGHT";
Icone.TITULO_UP = "TITULO_UP";
Icone.TITULO_LEFT = "TITULO_LEFT";
Icone.TITULO_RIGHT = "TITULO_RIGHT";
Icone.TITULO_DOWN = "TITULO_DOWN";
Icone.is_image_alterada = false;
Icone.is_label_alterado = false;

function Icone.__index(tabela,chave)
	return Icone[chave];
end

function Icone.new(o)
	local retorno = o or {};
	retorno = setmetatable(retorno,Icone);
	return retorno;
end

function Icone:draw()
	
	if(self.is_label_alterado or self.is_image_alterada) then
		self:atualizar();
	end
	
	local fundo = BibliotecaAuxiliarDesenho.newImagem(self.nb_largura,self.nb_altura);
	BibliotecaAuxiliarDesenho.limparTela(fundo,self.cor_fundo);
	
	--desenha a imagem
	if(self.img_icone ~= nil)then
		BibliotecaAuxiliarDesenho.desenharImagem(self.img_icone.nb_px,self.img_icone.nb_py,self.img_icone:draw(),fundo);
	end
	
	--desenha o label
	if(self.lb_nome ~= nil)then
		BibliotecaAuxiliarDesenho.desenharImagem(self.lb_nome.nb_px,self.lb_nome.nb_py,self.lb_nome:draw(),fundo);
	end
	
	return fundo;
end

function Icone:handler()
end

function Icone:atualizar()
	
	if((self.img_icone ~= nil) and (self.lb_nome ~= nil))then
		if(self.st_orientacao == Icone.TITULO_UP) or (self.st_orientacao == Icone.TITULO_DOWN)then
			self.nb_altura = self.img_icone.nb_altura + self.lb_nome.nb_altura +self.nb_distancia_label + self.nb_margem_superior+self.nb_margem_inferior;
			self.nb_largura = math.max(self.img_icone.nb_largura,self.lb_nome.nb_largura) + self.nb_margem_esquerda+self.nb_margem_direita;
			
			self.img_icone.nb_px = (self.nb_largura - self.img_icone.nb_largura)/2;
			self.lb_nome.nb_px = (self.nb_largura - self.lb_nome.nb_largura)/2;
			
			if(self.st_orientacao == Icone.TITULO_UP) then
				
				self.lb_nome.nb_py = self.nb_margem_superior;
				self.img_icone.nb_py = self.lb_nome.nb_py + self.lb_nome.nb_altura + self.nb_distancia_label;
			
			elseif(self.st_orientacao == Icone.TITULO_DOWN)then
				
				self.img_icone.nb_py = self.nb_margem_superior;
				self.lb_nome.nb_py = self.img_icone.nb_py + self.img_icone.nb_altura + self.nb_distancia_label;
			
			end
		
		elseif(self.st_orientacao == Icone.TITULO_LEFT) or (self.st_orientacao == Icone.TITULO_RIGHT)then
			self.nb_altura = math.max(self.img_icone.nb_altura,self.lb_nome.nb_altura) + self.nb_margem_superior+self.nb_margem_inferior;
			self.nb_largura = self.img_icone.nb_largura + self.lb_nome.nb_largura +self.nb_distancia_label + self.nb_margem_esquerda + self.nb_margem_direita;
			
			self.lb_nome.nb_py = (self.nb_altura - self.lb_nome.nb_altura)/2;
			self.img_icone.nb_py = (self.nb_altura - self.img_icone.nb_altura)/2; 
				
			if(self.st_orientacao == Icone.TITULO_LEFT) then
				
				self.lb_nome.nb_px = self.nb_margem_esquerda;
				self.img_icone.nb_px = self.lb_nome.nb_px + self.lb_nome.nb_largura + self.nb_distancia_label;
					
			elseif(self.st_orientacao == Icone.TITULO_RIGHT)then
				
				self.img_icone.nb_px = self.nb_margem_esquerda;
				self.lb_nome.nb_px = self.img_icone.nb_px + self.img_icone.nb_largura + self.nb_distancia_label;
				
			end
		end
	elseif(self.img_icone ~= nil)then
		self.nb_altura = self.img_icone.nb_altura + self.nb_margem_superior+self.nb_margem_inferior;
		self.nb_largura = self.img_icone.nb_largura + self.nb_margem_esquerda+self.nb_margem_direita;
		
		self.img_icone.nb_px = (self.nb_margem_esquerda+self.nb_margem_direita)/2;
		self.img_icone.nb_py = (self.nb_margem_inferior+self.nb_margem_superior)/2;
	
	elseif(self.lb_nome ~= nil)then
		self.nb_altura = self.lb_nome.nb_altura + self.nb_margem_superior+self.nb_margem_inferior;
		self.nb_largura = self.lb_nome.nb_largura + self.nb_margem_esquerda+self.nb_margem_direita;
		
		self.lb_nome.nb_px = (self.nb_margem_esquerda+self.nb_margem_direita)/2;
		self.lb_nome.nb_py = (self.nb_margem_inferior+self.nb_margem_superior)/2;
	else
	

	end
	
	self.is_label_alterado = false;
	self.is_image_alterada = false;	
end


function Icone:setImage(newImage)
	self.img_icone = newImage;
	
	self.img_icone:atualizar();
	
	self.is_image_alterada = true;
end

function Icone:setLabel(newLabel)
	self.lb_nome = newLabel;
	
	self.lb_nome:atualizar();
	
	self.is_label_alterado = true;
end

